// PROGRAMA : IDCPA000
// BIBLIOTECA : SISP
// OBJETIVO : ENVIAR COMANDO PCL PARA IMPRESSORA
// OBSERVACAO : AO ENTRAR NO NATURAL, PROCEDER DA SEGUINTE MANEIRA:
// NATDES TAB=(27,27)

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Idcpa000Report;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Relatorio;
import br.com.vti.sisp_sicrim.antigo.model.SicControleImp;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpa000 OBJETIVO : ENVIAR COMANDO PCL PARA IMPRESSORA OBSERVACAO : AO ENTRAR NO NATURAL, PROCEDER DA SEGUINTE MANEIRA: NATDES TAB=(27,27) *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcpa000")
public class Idcpa000 {
	// Views utilizadas
	SicControleImp controle = new SicControleImp();
	// Telas/relatorios utilizados
	Idcpa000Report report;
	// Includes utilizados
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	private String i01;
	private String i02;
	private String i03;
	private String i04;
	private String impPcl;

	Relatorio relatorio;
	Idcpa000 idcpa000Anterior;
	private String faseproc = "0";

	private Relatorio preMapas() {
		primeiraVez = true;
		relatorio = new Relatorio(primeiraVez, sessao);
		relatorio.setNavegar("../idcpa000/executar");
		relatorio.setTitulo("RELATORIO:SEM TITULO");
		result.include("relatorio", relatorio);
		sessao.setAtributo("IDCPA000", this);
		relatorio.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		faseproc = "0";
		return relatorio;
	}

	public Idcpa000(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public InputStreamDownload executar(Relatorio relatorio) {
		try {
			return main(relatorio);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}

	}

	private InputStreamDownload main(Relatorio prelatorio) throws JRException, ParseException, FileNotFoundException {

		if (prelatorio == null) {

			preMapas();

			return null;
		} else {
			restaurarEstados(prelatorio);
		}

		if (faseproc == null) {

			preMapas();

			return null;
		}
		// //DEFINE PRINTER(1) OUTPUT 'PDTSL032'
		// RELATORIO
		report = new Idcpa000Report();
		report.setPageSize(60);
		report.setLineSize(250);
		report.setImp("PDTSL032");
		// RELATORIO
		while (controle.leitura()) {
			// READADA
			i01 = UtilBean.concatena(controle.getCampoA());
			i02 = UtilBean.concatena(controle.getCampoB());
			i03 = UtilBean.concatena(controle.getCampoC());
			i04 = UtilBean.concatena(controle.getCampoD());
			impPcl = UtilBean.moveSubstring("", 0, 249, "X", i01);
			impPcl = impPcl + UtilBean.moveSubstring("", 0, 249, "X", i02);
			impPcl = impPcl + UtilBean.moveSubstring("", 0, 249, "X", i03);
			impPcl = impPcl + UtilBean.moveSubstring("", 0, 53, "X", i04);
			report.setImppcl(impPcl);
			report.gravaRelatorio(1);
			// RELATORIO
		}
		controle.fecha();
		if (controle.registrosProcessados() == 0) {
			report.gravaRelatorio(2);

		} else {
			report.gravaRelatorio(3);

		}

		return report.imprimir();
	}

	private void restaurarEstados(Relatorio prelatorio) {
		this.idcpa000Anterior = (Idcpa000) sessao.getAtributo("IDCPA000");
		if (prelatorio != null) {
			relatorio = prelatorio;
		} else {
			relatorio = this.idcpa000Anterior.relatorio;
		}

		faseproc = idcpa000Anterior.faseproc;

	}

}
